package cn.tedu.loding.rope;

import cn.tedu.loding.pojo.entity.Attribute;
import cn.tedu.loding.pojo.vo.AttributeListVO;
import cn.tedu.loding.pojo.vo.AttributeStandardVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理属性缓存的数据访问接口
 *
 * @author BKJ@tedu.cn
 * @version 1.0.0
 */
public interface IAttributeRedisRepository {

    /**
     * 属性数据项在Redis中的Key前缀
     */
    String ATTRIBUTE_ITEM_KEY_PREFIX = "attribute:item:";

    /**
     * 属性列表在Redis中的Key
     */
    String ATTRIBUTE_LIST_KEY = "attribute:list";

    /**
     * 所有属性数据项的Key
     */
    String ATTRIBUTE_ITEM_KEYS_KEY = "attribute:item-keys";

    /**
     * 向Redis中写入属性数据
     *
     * @param attributeStandardVO
     */
    void save(AttributeStandardVO attributeStandardVO);

    /**
     * 向Redis中写入属性列表
     *
     * @param attributes
     */
    void save(List<AttributeListVO> attributes);

    /**
     * 删除Redis中全部属性数据，包括各属性详情数据和属性列表等
     *
     * @return 成功删除的数据的数量
     */
    Long deleteAll();
    
    /**
     * 从Redis中读取属性数据
     *
     * @param id 属性id
     * @return 匹配的属性数据，如果没有匹配的数据，则返回null
     */
    AttributeStandardVO get(Long id);

    /**
     * 从Redis中读取属性列表
     *
     * @return 属性列表
     */
    List<AttributeListVO> list();
    
    /**
     * 从Redis中读取属性列表
     *
     * @param start 读取数据的起始下标
     * @param end   读取数据的截止下标
     * @return 属性列表
     */
    List<AttributeListVO>list(Long start,Long end);
    
}
     
